# Тригонометрия

`Trig` предоставляет абстракцию для любого типа, определяющего тригонометрические функции.
Для этого типы должны иметь возможность разумно аппроксимировать реальные значения.

Поддерживаются следующие методы:

- `e`: число Эйлера, `2.71828...`
- `pi`: число \\(\pi\\) - математическая постоянная, равная отношению длины окружности к её диаметру, `3.14159...`
- `exp`: экспоненциальная функция, \\(e^{x}\\)
- `expm1`: \\(e^{x} - 1\\)
- `log`: натуральный логарифм `a` (`r` такой, что `exp(r)= a`)
- `log1p`: `log(x + 1)`
- `sin`: синус - координата y единичного круга.
- `cos`: косинус - координата x единичного круга.
- `tan`: тангенс — касательная: эквивалентна `sin(a) / cos(a)`.
- `asin`: обратная функция синуса, `asin(sin(a))= a`.
- `acos`: обратная функция косинуса, `acos(cos(a))= a`.
- `atan`: обратная функция тангенса, `atan(tan(a))= a`.
- `atan2`: подобен `atan`, но возвращает результаты в формате `(-pi, pi]`.
- `sinh`: гиперболический синус, координата y единичной гиперболы.
- `cosh`: гиперболический косинус, координата x единичной гиперболы.
- `tanh`: гиперболический тангенс, `sinh(a) / cosh(a)`.
- `toRadians`: конвертировать градусы (например `180`) в пи-радианы (например `pi`).
- `toDegrees`: конвертировать пи-радианы (например `pi/2`) в градусы (например `90`).

Spire способен вычислять тригонометрические значения (например, число \\(\pi\\)) и функции (например, синус) 
с произвольной точностью при использовании `BigDecimal`. 
В отличие от `NRoot`, здесь нет поддержки создания экземпляров `Trig[Rational]` с произвольной точностью 
(хотя экземпляр `Double` с точностью можно найти в `spire.optional.rationalTrig`).

---

**Ссылки:**

- [Spire home page](https://typelevel.org/spire)
- [Spire User's Guide](https://typelevel.org/spire/guide.html)
